package com.atguigu.gmall.all.controller;

import com.alibaba.fastjson.JSONObject;
import com.atguigu.gmall.common.result.Result;
import com.atguigu.gmall.product.client.ProductFeignClient;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import org.springframework.web.bind.annotation.RestController;
import org.thymeleaf.TemplateEngine;
import org.thymeleaf.context.Context;

import java.io.File;
import java.io.FileWriter;
import java.io.PrintWriter;
import java.io.Writer;
import java.util.List;

/**
 * 首页管理
 *
 */
@Controller
public class IndexController {


    //查询首页数据   一二三级分类
    @Autowired
    private ProductFeignClient productFeignClient;

    //进入首页 渲染页面  www.gmall.com   没有使用静态化技术
//    @GetMapping("/")
//    public String index(Model model){
//        //首页 一二三级分类 List<JSONObject>
//        Result result = productFeignClient.getBaseCategoryList();
//        if(result.isOk()){
//            model.addAttribute("list",result.getData());
//        }
//        //转发视图
//        return "index/index";
//    }

    @Autowired
    private TemplateEngine templateEngine;//模板引擎
    //使用静态化技术   提前生成首页  D:/temp/index.html 静态化后的页面
    @GetMapping("/createHtml")
    @ResponseBody
    public Result createHtml() throws Exception{
        //静态化生成页面到指定位置   Thymeleaf页面标签  静态化模板引擎（进行静态化处理）
        // 1:模板 index.html(要求必须使用Thymeleaf页面标签完成）
        // 2:数据
        Result result = productFeignClient.getBaseCategoryList();
        //就是Map
        Context context = new Context();
        //三级分类
        context.setVariable("list",result.getData());
        // 3:输出 Writer out   位置   D:/temp/index.html
        Writer out = new PrintWriter(new File("D:\\temp\\index.html"),"UTF-8");
        // 4: 模板引擎  参数1：模板  参数2数据
        templateEngine.process("index/index", context,out);

        return Result.ok().message("首页生成成功");
    }


    // 当用户访问时 直接返回提前生成好的首页
    // 进入首页 渲染页面  www.gmall.com
    @GetMapping("/")
    public String index(){
        return "index";
    }

}
